const { secretKey } = require('./tools/business')
const { expressjwt: jwt } = require('express-jwt')
const responseEntity = require('./tools/responseEntity')
const whiteList = require('./whiteList')
// 白名单，不需要token的接口
module.exports = (app)=>{
  // token拦截器
  app.use(jwt({
    secret: secretKey,
    algorithms: ["HS256"]
  }).unless({ path: whiteList }))
  // 所有接口挂载api，模拟网关作用
  app.use('/api',require('./api/index.js'))
  // 监听错误中间件
  app.use((err, req, res, next) => {
    // 如果错误是由token解析失败导致的
    if (err.name === 'UnauthorizedError') {
      return responseEntity.setEneity({
        res,
        status: 401,
        data: {
          message: '无效的token',
          success: false
        }
      })
    }
    // 如果是其他位置原因导致的错误
    responseEntity.setEneity({
      res,
      status: 500,
      data: {
        message: '未知错误',
        success: false
      }
    })
    next()
  })
}